package com.ltxtiyu.video.service.impl;


import com.alibaba.dubbo.config.annotation.Service;

import com.ltxtiyu.video.common.JsonTool;
import com.ltxtiyu.video.common.RetEnum;

import com.ltxtiyu.video.dao.ltx.ManagerDao;
import com.ltxtiyu.video.dao.ltx.UserDao;
import com.ltxtiyu.video.entity.Manager;
import com.ltxtiyu.video.entity.User;
import com.ltxtiyu.video.service.ms.ManagerService;
import com.ltxtiyu.video.tool.SecurityUtil;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.*;

@Service
public class ManagerServiceImpl implements ManagerService {
    @Autowired
    ManagerDao md;
    @Autowired
    UserDao userDao;

    @Override
    public Manager findByUserName(String username) {
        return md.findByUserName(username);
    }

    @Override
    public Map<String, Object> selectParamList(Map<String, Object> map) {
        int count = md.findByParamCount(map);
        List<Manager> data= md.findByParamList(map);
        Map<String,Object> result = new HashMap<>();
        result.put("code",0);
        result.put("msg","");
        result.put("count",count);
        result.put("data",data);
        return result;
    }

    @Override
    public String updateManager(Manager manager, Integer id) {
//        if (manager.getUserId() != null) {
//            User user = userDao.selectByPrimaryKey(manager.getUserId());
//            if (user == null){
//                return JsonTool.genJson(RetEnum.OAUTH_CHECK_INEXISTENCE);
//            }
//        }
        int i = md.updateByPrimaryKeySelective(manager);
        if(i>0){
//            //绑定角色
//            mrd.delByManagerId(manager.getId());
//            if(StringUtil.isNotBlank(roleIds)) {
//                if (roleIds.contains(",")){
//                    String[] split = roleIds.split(",");
//                    for (int j = 0; j < split.length; j++) {
//                        int roleId = Integer.parseInt(split[j]);
//                        ManagerRole managerRole = new ManagerRole();
//                        managerRole.setManagerId(manager.getId());
//                        managerRole.setRoleId(roleId);
//                        mrd.insertSelective(managerRole);
//                    }
//                }else {
//                    int roleId = Integer.parseInt(roleIds);
//                    ManagerRole managerRole = new ManagerRole();
//                    managerRole.setManagerId(manager.getId());
//                    managerRole.setRoleId(roleId);
//                    mrd.insertSelective(managerRole);
//                }
//            }
            return JsonTool.genJson(RetEnum.UPDATE_SUCCESS);
        }else{
            return JsonTool.genJson(RetEnum.UPDATE_FILE);
        }
    }

    @Override
    public String insertManager(Manager manager) {
//        if (manager.getUserId() != null) {
//            User user = userDao.selectByPrimaryKey(manager.getUserId());
//            if (user == null){
//                return JsonTool.genJson(RetEnum.OAUTH_CHECK_INEXISTENCE);
//            }
//        }
        manager.setCreateTime(new Date());
        manager.setPassword(SecurityUtil.encrypt(manager.getPassword()));
        int i = md.insertSelective(manager);
        if(i>0){
            //绑定角色
//            if(StringUtil.isNotBlank(roleIds)) {
//                if (roleIds.contains(",")){
//                    String[] split = roleIds.split(",");
//                    for (int j = 0; j < split.length; j++) {
//                        int roleId = Integer.parseInt(split[j]);
//                        ManagerRole managerRole = new ManagerRole();
//                        managerRole.setManagerId(manager.getId());
//                        managerRole.setRoleId(roleId);
//                        mrd.insertSelective(managerRole);
//                    }
//                }else {
//                    int roleId = Integer.parseInt(roleIds);
//                    ManagerRole managerRole = new ManagerRole();
//                    managerRole.setManagerId(manager.getId());
//                    managerRole.setRoleId(roleId);
//                    mrd.insertSelective(managerRole);
//                }
//
//            }
            return JsonTool.genJson(RetEnum.SUCCESS);
        }else{
            return JsonTool.genJson(RetEnum.FAIL);
        }
    }
    @Override
    public String delByIds(String ids) {
        if (ids.contains(",")){
            String[] split = ids.split(",");
            for (int i = 0; i <split.length ; i++) {
                int id = Integer.parseInt(split[i]);
                md.deleteByPrimaryKey(id);
                //删除用户和角色绑定关系
//                mrd.delByManagerId(id);

            }
        }else {
            int id = Integer.parseInt(ids);
            md.deleteByPrimaryKey(id);
            //删除用户和角色绑定关系
//            mrd.delByManagerId(id);
        }

        return JsonTool.genJson(RetEnum.SUCCESS);
    }

//    @Override
//    public List<MenuBean> selectManagerMenu(Integer managerId) {
//        List<Menu> list=  menuDao.selectManagerMenu(managerId);
//        List<Menu> listTemp = new ArrayList();
//        for(int i=0;i<list.size();i++){
//            if(!listTemp.contains(list.get(i))){
//                listTemp.add(list.get(i));
//            }
//        }
//        List<MenuBean> menuBeans = new ArrayList<>();
//        for (int i = 0; i <listTemp.size() ; i++) {
//            Menu menu = listTemp.get(i);
//            MenuBean menuBean = new MenuBean();
//            menuBean.setId(menu.getId());
//            menuBean.setHref(menu.getMenuUrl());
//            menuBean.setTitle(menu.getMenuName());
//            menuBean.setSpread(false);
//            menuBean.setIcon(menu.getMenuIcon());
//            Map<String,Object> param = new HashMap<>();
//            param.put("managerId",managerId);
//            param.put("parentMenuId",menu.getId());
//
//            List<MenuBean> menuChilden=  menuDao.selectRoleMenuByParentId(param);
//            if(menuChilden != null ){
//                menuBean.setChildren(menuChilden);
//            }
//            menuBeans.add(menuBean);
//
//        }
//        return menuBeans;
//    }

    @Override
    public Map<String, Object> detail(Integer id) {
        Map<String, Object> result = new HashMap<>();
        Manager manager = md.selectByPrimaryKey(id);
        result.put("manager",manager);

//        List<Role> roles = rd.findByUserId(manager.getId());
//        if (roles != null &&roles.size()>0) {
//            StringBuilder sb = new StringBuilder();
//            for (int i = 0; i < roles.size(); i++) {
//                sb.append(roles.get(i).getId() + ",");
//            }
//            String s = sb.toString();
//            result.put("roleIds", s.substring(0, s.length() - 1));
//            StringBuilder stringBuilder = new StringBuilder();
//            for (int i = 0; i < roles.size(); i++) {
//                stringBuilder.append(roles.get(i).getName() + ",");
//            }
//            String str = stringBuilder.toString();
//            result.put("roleName", str.substring(0, str.length() - 1));
//        } else {
//            result.put("roleIds", null);
//            result.put("roleName", null);
//
//        }
        return result;
    }

//    @Override
//    public List<MenuBean> selectMenuByParentId(Integer parentMenuId) {
//        return menuDao.selectMenuByParentId(parentMenuId);
//    }

    @Override
    public String changeInfo(Manager manager) {
        int i = md.updateByPrimaryKeySelective(manager);
        if(i>0){
            return JsonTool.genJson(RetEnum.UPDATE_SUCCESS);
        }else{
            return JsonTool.genJson(RetEnum.UPDATE_FILE);
        }
    }

    @Override
    public String changePwd(Manager loginUser) {
        int i = md.updateByPrimaryKeySelective(loginUser);
        if(i>0){
            return JsonTool.genJson(RetEnum.UPDATE_SUCCESS);
        }else{
            return JsonTool.genJson(RetEnum.UPDATE_FILE);
        }
    }

    @Override
    public String updatePwd(Integer id, String newPassword) {
        Manager manager = md.selectByPrimaryKey(id);
        manager.setPassword(SecurityUtil.encrypt(newPassword));
        int i = md.updateByPrimaryKeySelective(manager);
        if(i>0){
            return JsonTool.genJson(RetEnum.SUCCESS);
        }else{
            return JsonTool.genJson(RetEnum.FAIL);
        }
    }

    @Override
    public Manager checkUsernameAndPassword(Map<String, Object> param) {
        Manager manager = md.checkUsernameAndPassword(param);
        return manager;
    }
}
